@echo off
title Mine Layer
color 08
:SetUp
color 08
cls
set map=1

set marker=O
set enemy=M
set barrier=#
set empty=-
set mine=*
set eat=C
set boom=?
set trash=8
set warp=@

set ai=x
set behind=%empty%
set trail=%empty%

set/a enemylives=3

set/a sidea=41
set/a sideb=80
set/a law=0

echo.
rem sets up the game screen.
:LawLoop
if %law%==800 goto Start

set/a law=%law% +1
if %law% LSS 41 (
set v%law%=%barrier%
goto LawLoop
)
if %law% GTR 760 (
set v%law%=%barrier%
goto LawLoop
)
if %law%==%sidea% (
set v%law%=%barrier%
set/a sidea=%sidea% +40
goto LawLoop
)

if %law%==%sideb% (
set v%law%=%barrier%
set/a sideb=%sideb% +40
echo  *
goto LawLoop
) else (
set v%law%=%empty%
goto LawLoop
)

:Start
call level%map%.bat
set v%place%=%marker%
set v%spot%=%enemy%

:YouMove
title Mines: %mines%  Walls: %walls%       Enemy Lives: %enemylives%
cls
if %spot%==%place% (
set v%place%=%eat%
cls
goto Die
)
call screen.bat
set shove=y
start move.vbs

set/p shove=     



if %shove%==w (
set shove=-40
set shovex=-0
set shovey=-1
goto MarkerMove
)
if %shove%==s (
set shove=+40
set shovex=-0
set shovey=+1
goto MarkerMove
)
if %shove%==d (
set shove=+1
set shovex=+1
set shovey=-0
goto MarkerMove
)
if %shove%==a (
set shove=-1
set shovex=-1
set shovey=-0
goto MarkerMove
)
if %shove%==m (
goto LayMine
)
if %shove%==n (
goto LayWall
)
goto EnemyMove

:MarkerMove
set/a spotcheck=%place% %shove%
if %spotcheck%==%warp1% goto Warp1
if %spotcheck%==%warp2% goto Warp2
if %spotcheck%==%warp3% goto Warp3
if %spotcheck%==%warp4% goto Warp4
set checker=%%
set checker=%checker%v%spotcheck%
set checker=%checker%%%
echo set spotcheck=%checker%>spotcheck.bat
call spotcheck.bat
if %spotcheck%==%barrier% goto EnemyMove


if %spotcheck%==%spot% goto BadMove
if %spotcheck%==%mine% goto StupidMove
set v%place%=%behind%
set/a place=%place% %shove%
set v%place%=%marker%
set/a markerx=%markerx% %shovex%
set/a markery=%markery% %shovey%

if %behind%==%mine% set behind=%empty%
if %behind%==%barrier% set behind=%empty%
goto EnemyMove


:Warp1
set v%place%=%behind%
set/a place=%place% %shove% %tunnel1%
set v%place%=%marker%
set/a markerx=%markerx% %shovex% %tunnel1x%
set/a markery=%markery% %shovey% %tunnel1y%
if %behind%==%mine% set behind=%empty%
goto EnemyMove


:Warp2
set v%place%=%behind%
set/a place=%place% %shove% %tunnel2%
set v%place%=%marker%
set/a markerx=%markerx% %shovex% %tunnel2x%
set/a markery=%markery% %shovey% %tunnel2y%
if %behind%==%mine% set behind=%empty%
goto EnemyMove


:Warp3
set v%place%=%behind%
set/a place=%place% %shove% %tunnel3%
set v%place%=%marker%
set/a markerx=%markerx% %shovex% %tunnel3x%
set/a markery=%markery% %shovey% %tunnel3y%
if %behind%==%mine% set behind=%empty%
goto EnemyMove

:Warp4
set v%place%=%behind%
set/a place=%place% %shove% %tunnel4%
set v%place%=%marker%
set/a markerx=%markerx% %shovex% %tunnel4x%
set/a markery=%markery% %shovey% %tunnel4y%
if %behind%==%mine% set behind=%empty%
goto EnemyMove




:LayMine
if %mines%==0 goto EnemyMove
set/a mines=%mines% -1
set behind=%mine%
set v%place%=%mine%

goto YouMove


:LayWall
if %walls%==0 goto EnemyMove
set/a walls=%walls% -1
set behind=%barrier%
set v%place%=%barrier%

goto YouMove





:EnemyMove
if %enemyy%==%markery% (
goto Enemyx
)
if %enemyx%==%markerx% (
goto EnemyY
)
if %ai%==y goto EnemyY


:EnemyX
set ai=y
if %enemyx% GTR %markerx% (
set move=-1
set movex=-1
set movey=-0
goto Jump
)
set move=+1
set movex=+1
set movey=-0
goto Jump

:EnemyY
set ai=x
if %enemyy% GTR %markery% (
set move=-40
set movex=-0
set movey=-1
goto Jump
)
set move=+40
set movex=-0
set movey=+1







:Jump
set/a spotcheck=%spot% %move%
set checker=%%
set checker=%checker%v%spotcheck%
set checker=%checker%%%
echo set spotcheck=%checker%>spotcheck.bat
call spotcheck.bat
if %spotcheck%==%barrier% goto YouMove
if %spotcheck%==%mine% goto LastCheck
if %spotcheck%==%warp% goto YouMove

:CheckDone
set v%spot%=%trail%
set/a spot=%spot% %move%
set v%spot%=%enemy%
set/a enemyx=%enemyx% %movex%
set/a enemyy=%enemyy% %movey%
if %spotcheck%==%mine% (
set trail=%trash%
set spotcheck=blank
if %enemylives%==0 goto Win
goto CheckDone
)
if %trail%==%trash% set trail=%empty%
goto YouMove

:Lastcheck
set backup=%move%
set/a backupx=%movex%
set/a backupy=%movey%
if %move%==-1 (
set move=-40
set movex=-0
set movey=-1
set ai=x
goto CheckingA
)
if %move%==-40 (
set move=+1
set movex=+1
set movey=-0
set ai=x
goto CheckingA
)
if %move%==+1 (
set move=+40
set movex=-0
set movey=+1
set ai=y
goto CheckingA
)
set move=-1
set movex=-1
set movey=-0
set ai=y

:CheckingA
set/a spotcheck=%spot% %move%
set checker=%%
set checker=%checker%v%spotcheck%
set checker=%checker%%%
echo set spotcheck=%checker%>spotcheck.bat
call spotcheck.bat
if %spotcheck%==%empty% goto CheckDone
if %move%==-1 (
set move=+1
set movex=+1
set movey=-0
set ai=y
goto CheckingB
)
if %move%==-40 (
set move=+40
set movex=-0
set movey=+1
set ai=x
goto CheckingB
)
if %move%==+1 (
set move=-1
set movex=-1
set movey=-0
set ai=y
goto CheckingB
)
set move=-40
set movex=-0
set movey=-1
set ai=x

:CheckingB
set/a spotcheck=%spot% %move%
set checker=%%
set checker=%checker%v%spotcheck%
set checker=%checker%%%
echo set spotcheck=%checker%>spotcheck.bat
call spotcheck.bat
if %spotcheck%==%empty% goto CheckDone
set move=%backup%
set/a movex=%backupx%
set/a movey=%backupy%
set/a enemylives=%enemylives% -1


goto CheckDone




:StupidMove
cls
set v%place%=%behind%
set/a place=%place% %shove%
set v%place%=%boom%
goto Die



:BadMove
cls
set marker=%empty%
set enemy=%eat%





:Die
color 0c
call screen.bat
echo   You died!
echo.
set/p playagain=  Would you like to play again? y/n 
if %playagain%==y goto SetUp
exit

:Win
cls
set v%spot%=%boom%
color 0a

call screen.bat
echo      You win!
echo.
set/p playagain=  Would you like to play again? y/n 
if %playagain%==y goto SetUp
exit